<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
//        快捷查询
        $row = Db::name('user')
//            ->where('id', 5)
            ->where('id', 'eq', 5)
            ->find();

        $row = Db::name('user')
//            ->where('id', '<=', 5)
            ->where('id', 'in', [1,3,5,9])
            ->select();

        $row = Db::name('user')
            ->where('name', 'like', '%王%')
            ->select();

        $row = Db::name('user')
            ->where('name', 'like', '%王%')
            ->where('age', '>', '18')
            ->select();

        $row = Db::name('user')
            ->where('sex', '0')
            ->whereOr('province', '上海')
            ->select();

//        批量查询
        $row = Db::name('user')
            ->where([
                'id'=> ['between', '10,20'],
                'sex'=> ['eq', 0]
            ])->select();

        // ID 1/2/3/4/5/6/ 16/26/36/66/88
        $row = Db::name('user')
            ->where('sex',0)
            ->where('id', ['between', '1,6'], ['in', [16,26,36,66,88]], 'or')
            ->select();


//        区间查询
        $row = Db::name('user')
            ->where('id',['>',2], ['<',10])
            ->select();

//        多表查询
//            1. 手动多表
        $row = Db::field('u.name un, l.name ln')
            ->table(['hc_user'=>'u', 'hc_lover'=>'l'])
            ->where('u.id = l.user_id')
            ->select();
        /*
         SELECT ....
         FROM  T1,T2
         WHERE ID= UID...
         * */

//            2. JOIN
        $row = Db::table('hc_user')
            ->alias('u')
            ->field(['u.name'=>'un','l.name'=>'lns'])
            ->join('hc_lover l', 'u.id = l.user_id')
            ->select();

//            3. 视图
        $row = Db::view('user', ['name'=>'un'])
            ->view('lover',['name'=>'ln'], 'user.id = lover.user_id')
            ->select();

//        聚合查询
        $row = Db::table('hc_user')->avg('age');

        $row = Db::table('hc_user')
            ->field('province, count(id)')
            ->group('province')
            ->select();

        $row = Db::table('hc_user')
            ->field('province, group_concat(name)')
            ->group('province')
            ->select();

//        子查询
//            1. fetchSql 方式
//        ->fetchSql(true)
//            2. buildSql 方式
        // 构建子SQL
        $query = Db::table('hc_user')
            ->field(['id','name','sex','age'])
            ->where('sex',0)
            ->buildSql();
//        var_dump($query);
        // 拼装 完整SQL
        $row = Db::table($query . ' u')
            ->where('u.age','gt', 18)
            ->order('u.id','desc')
            ->select();

        var_dump( $row );
    }
}
